#pragma once

// Esto es lo que usaremos para chequear errores de CUDA, utiliza las variables
// del preprocessor para generar una linea y un archivo con el error.
#define AssertCUDA(msg)		CudaUtil::__AssertCUDA(msg, __FILE__, __LINE__)

class CudaUtil
{
public:
	CudaUtil(void);
	~CudaUtil(void);

	// Chequea que la ultima llamada a CUDA no haya generado errores, si lo hizo
	// muestra el mensaje de error.
	static inline void __AssertCUDA(const char *errorMessage, const char *file, const int line )
	{
		cudaError_t err = cudaGetLastError();
		if( cudaSuccess != err) {
			fprintf(stderr, "cutilCheckMsg() CUTIL CUDA error: %s in file <%s>, line %i : %s.\n",
					errorMessage, file, line, cudaGetErrorString( err) );
			system("PAUSE");
		}
	}
};
